package org.snail.chat.service.chatchain.chain;

import lombok.extern.log4j.Log4j;
import org.snail.chat.service.chatchain.dao.ChatCreateOrUpdateDAO;
import org.snail.common.StringUtils2;
import org.snail.dept.bean.TreeNode;

import java.util.Map;

/**
 * 给群组起名
 */
@Log4j
public class NameChatCreateOrUpdateHandler extends ChatCreateOrUpdateHandler {

    @Override
    public void doCreateOrUpdate(TreeNode treeNode, Map<String, ChatCreateOrUpdateDAO> chatCreateOrUpdateDAOMap) throws Exception {

        //获取当前树的ChatCreateOrUpdateDAO
        ChatCreateOrUpdateDAO chatCreateOrUpdateDAO = getChatCreateOrUpdateDAO(treeNode, chatCreateOrUpdateDAOMap);


        //dao层填充数据   useridList,ownerId, 部门名称
        //1.获取部门名称
        //获取部门名称   【佰钧成DU2—云效平台】
        //TODO 这个地方不要随意添加部门，只是最底层的才添加部门
        StringBuilder groupName = new StringBuilder().append("【佰钧成");
        String lv = treeNode.getLv();
        if (null == lv) {
            log.error("tree层级为空！treeNode：" + treeNode);
            groupName.append("ROOT NODE");
        } else if (lv.contains("L2")) {
            groupName.append(treeNode.getName());
        } else if (lv.contains("L3")) {
            groupName.append(treeNode.getParentNode().getName()).append(treeNode.getName());
        } else if (lv.contains("L4")) {
            groupName.append(treeNode.getParentNode().getName()).append("-").append(treeNode.getName());
        } else if (lv.contains("L5")) {
            if (treeNode.getParentNode().getName().contains("DU")){
                groupName.append(treeNode.getParentNode().getName()).append("-").append(treeNode.getName());
            } else {
                groupName.append(treeNode.getParentNode().getParentNode().getName()).append("-").append(treeNode.getParentNode().getName()).append("-").append(treeNode.getName());
            }
        }
        StringBuilder appendName = groupName.append("】");
        String groupoNameStr = appendName.toString();
        String finalName = StringUtils2.judgeNameLength(groupoNameStr);
        chatCreateOrUpdateDAO.setName(finalName);

        //重新放回到Map中
        chatCreateOrUpdateDAOMap.put(treeNode.getId(), chatCreateOrUpdateDAO);
    }
}
